
;;;
;;; My work on common prefixes, using the record type provided
;;; by libsuffix
;;;
;;; Copyright 2016 Jason K. MacDuffie
;;; License: GPLv3+
;;;

(import (scheme base)
        (scheme load))

(load "./libsuffix.scm")

(define prefixes
  '("a" "ab" "ad" "co" "com" "con" "contra" "de" "di" "dis"
    "e" "em" "en" "ex" "im" "in" "o" "ob" "per" "pre" "pro"
    "re" "se" "su" "sub" "tra" "trans"))

(define prefixes-2
  '("ante" "auto" "counter" "enter" "extra" "inter" "intro" "out"
    "retro" "super" "sur"))

(define suffixes-data
  ;; List of known suffixes. Need at least 4 prefixes
  '((act
     ("co" "en" "ex" "pre" "re")
     ("act"))
    (cant
     ("de" "dis" "in" "re")
     ("cant" "cantation"))
    (cede
     ("a" "con" "ex" "pre" "pro" "re" "se" "su")
     ("cede" "cess" "ceed" "cession"))
    (cept
     ("a" "con" "contra" "de" "dis" "ex" "in" "per" "pre"
      "re")
     ("cept" "ception"))
    (cide
     ("con" "de" "in" "pre")
     ("cide" "cision"))
    (clude
     ("con" "ex" "in" "o" "pre" "se")
     ("clude"))
    (code
     ("de" "en" "pre" "re" "sub")
     ("code"))
    (crete
     ("a" "con" "dis" "ex" "se")
     ("crete"))
    (cur
     ("con" "ex" "in" "o" "re")
     ("cur" "cursion"))
    (duce
     ("ab" "ad" "con" "de" "e" "in" "pro" "re" "se" "sub"
      "tra" "trans")
     ("duce"))
    (face
     ("de" "e" "en" "pre" "re")
     ("face"))
    (fect
     ("a" "con" "de" "e" "in" "per" "re" "trans")
     ("fect"))
    (ference
     ("con" "de" "di" "in" "pre" "re" "trans")
     ("ference"))
    (fine
     ("a" "con" "de" "re")
     ("fine"))
    (flate
     ("con" "de" "in" "re" "su")
     ("flate" "flation"))
    (form
     ("con" "de" "in" "per" "pre" "re" "trans")
     ("form"))
    (fuse
     ("con" "de" "di" "e" "in" "per" "pro" "re" "su"
      "trans")
     ("fuse"))
    (gestion
     ("con" "di" "e" "in" "su")
     ("gestion"))
    (gress
     ("a" "con" "di" "e" "in" "pro" "re" "trans")
     ("gress"))
    (ject
     ("ab" "ad" "de" "dis" "e" "in" "ob" "pro" "re" "sub"
      "tra")
     ("ject" "jective"))
    (join
     ("ad" "co" "con" "dis" "en" "re" "sub")
     ("join"))
    (junction
     ("ad" "con" "dis" "in" "sub")
     ("junction"))
    (lapse
     ("co" "e" "pro" "re")
     ("lapse"))
    (late
     ("ab" "co" "de" "di" "e" "ob" "pre" "pro" "re" "sub"
      "trans")
     ("late"))
    (literate
     ("a" "ob" "pre" "sub" "trans")
     ("literate"))
    (lude
     ("a" "co" "de" "e" "pre")
     ("lude"))
    (mend
     ("a" "co" "e" "re")
     ("mend"))
    (place
     ("dis" "em" "pre" "re")
     ("place"))
    (plete
     ("com" "de" "ex" "im" "re" "su")
     ("plete" "plement"))
    (plication
     ("a" "com" "ex" "im" "re" "su")
     ("plication"))
    (port
     ("a" "com" "de" "dis" "ex" "im" "re" "trans")
     ("port"))
    (pose
     ("a" "com" "de" "dis" "ex" "im" "o" "pro" "re" "su"
      "trans")
     ("pose"))
    (quest
     ("a" "con" "in" "re")
     ("quest"))
    (quire
     ("a" "en" "in" "re")
     ("quire"))
    (scribe
     ("a" "ad" "co" "con" "de" "in" "pre" "pro" "re" "sub"
      "trans")
     ("scribe" "script"))
    (sent
     ("a" "ab" "con" "dis" "pre" "re")
     ("sent"))
    (sert
     ("a" "de" "ex" "in")
     ("sert"))
    (set
     ("a" "co" "in" "re" "sub")
     ("set"))
    (serve
     ("con" "de" "dis" "ob" "pre" "re" "sub")
     ("serve"))
    (side
     ("a" "in" "re" "sub")
     ("side"))
    (sign
     ("a" "co" "con" "de" "en" "re")
     ("sign"))
    (solution
     ("ab" "dis" "ex" "re")
     ("solution"))
    (sort
     ("a" "con" "pre" "re")
     ("sort"))
    (spect
     ("a" "in" "pro" "re" "su")
     ("spect"))
    (spire
     ("a" "con" "in" "per" "re" "su" "trans")
     ("spire"))
    (stant
     ("con" "dis" "in" "sub")
     ("stant" "stance"))
    (struct
     ("con" "de" "in" "ob" "re")
     ("struct"))
    (tain
     ("a" "ab" "con" "de" "ob" "per" "re" "su")
     ("tain" "stain"))
    (tent
     ("a" "ab" "con" "de" "dis" "ex" "in" "pre" "re")
     ("tent" "tension" "tention"))
    (tract
     ("a" "ab" "con" "de" "dis" "ex" "pro" "re" "sub")
     ("tract"))
    (train
     ("de" "dis" "en" "pre" "re")
     ("train"))
    (test
     ("a" "con" "de" "ob" "pre" "pro" "re" "sub")
     ("test"))
    (vention
     ("con" "contra" "in" "pre" "sub")
     ("vention"))
    (verse
     ("a" "ad" "co" "con" "contra" "di" "e" "in" "ob"
      "per" "re" "sub" "trans" "tra")
     ("verse" "vert"))
    (vious
     ("de" "en" "ob" "per" "pre")
     ("vious"))))

(set! suffixes
  (map list->suffix suffixes-data))
